// 导入 express
const express = require('express')
// 创建路由对象
const router = express.Router()
// 导入数据库操作模块
const db = require('../db/index')
var moment = require('moment')

// 获取 所有订单信息
router.get('/logisticsinfoAll', (req, res) => {
  // console.log(req.logistics_, '2222')
  console.log(req.query, '3333')
  // console.log(req.params, '44444')
  // 偏移量
  const pages = req.query.pagesize * (req.query.pagenum - 1)
  console.log(pages)
  if (req.user.role === '管理员') {
    if (req.query.query) {
      var sql = `select * from logistics where logistics_name like "%${
        req.query.query
      }%" limit ${(pages, req.query.pagesize)};`
    } else {
      // var sql = `select * from logistics_ limit ${pages},${req.query.pagesize}`
      var sql = 'select * from logistics'
    }
  } else {
    if (req.query.query) {
      var sql = `select * from logistics where logistics_name like "%${
        req.query.query
      }%" limit ${(pages, req.query.pagesize)};`
    } else {
      var sql = `select * from logistics where logistics_username like "%${
        req.user.username
      }%" limit ${(pages, req.query.pagesize)};`
    }
  }

  // const sql = `select * from logistics_ where logistics_name like "%${req.query.query}%";`
  // 注意：req 对象上的 logistics_ 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(sql, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.cc(err + 'sql语句执行失败')

    // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
    if (results.length < 1) return res.cc('获取订单信息失败！')

    // 3. 将订单信息响应给客户端
    res.send({
      code: 200,
      message: '获取全部订单基本信息成功！',
      data: results,
      total: results.length,
    })
  })
})

// 根据id获取订单的基本信息
router.get('/logisticsinfo/:id', (req, res) => {
  console.log(req.user, '111111111111')
  console.log(req.params, '222222222')
  // 根据订单的 id，查询订单的基本信息
  // 注意：为了防止订单的密码泄露，需要排除 password 字段
  const sql = `select * from logistics where logistics_id=?`
  // 注意：req 对象上的 logistics_ 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(sql, req.params.id, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.cc(err)

    // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
    if (results.length !== 1) return res.cc('获取订单信息失败！')

    // 3. 将订单信息响应给客户端
    res.send({
      code: 200,
      message: '获取订单基本信息成功！',
      data: results[0],
    })
  })
  // res.send('ok')
})
// 获取订单状态
router.get('/status', (req, res) => {
  const sql = `select logistics_id,logistics_status from logistics`
  // 注意：req 对象上的 logistics_ 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(sql, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.cc(err)

    // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
    if (results.length !== 1) return res.cc('获取订单状态信息失败！')

    // 3. 将订单信息响应给客户端
    res.send({
      code: 200,
      message: '获取订单状态信息成功！',
      data: results[0],
    })
  })
  // res.send('ok')
})

// 更新订单信息
router.post('/logisticsinfo/:id', (req, res) => {
  const sql = `update logistics set ? where logistics_id=?`
  console.log(req.params, ',,,,,,,,,,,,,,,')
  console.log(req.body, '................')
  req.body.logistics_date = moment(req.body.logistics_date).format(
    'YYYY-MM-DD HH:mm:ss'
  )
  db.query(sql, [req.body, req.params.id], (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err)

    // 执行 SQL 语句成功，但影响行数不为 1
    if (results.affectedRows !== 1) return res.cc('修改订单基本信息失败！')

    // 修改订单信息成功
    res.send({
      code: 200,
      message: '修改订单基本信息成功！',
    })
  })
})

// 添加订单信息
router.post('/addlogisticsinfo', (req, res) => {
  console.log(req.body, 'add|add')
  // 接收表单数据
  const logistics_info = req.body
  console.log(logistics_info, '+++++++++++++++')

  const sql = `select * from logistics where logistics_name=?`
  db.query(sql, [logistics_info.logistics_name], function (err, results) {
    // 执行 SQL 语句失败
    if (err) {
      return res.send({ code: 400, message: err.message })
    }
    // 订单已经存在
    if (results.length > 0) {
      return res.send({
        code: 400,
        message: '订单已经存在，请误重复添加！',
      })
    }
    logistics_info.logistics_date = moment(
      logistics_info.logistics_date
    ).format('YYYY-MM-DD HH:mm:ss')
    // console.log(logistics_info, '6666666666666')
    const sql = 'insert into logistics set ?'
    db.query(sql, logistics_info, function (err, results) {
      // 执行 SQL 语句失败
      if (err) return res.send({ code: 400, message: err.message })
      // SQL 语句执行成功，但影响行数不为 1
      if (results.affectedRows !== 1) {
        return res.send({
          code: 400,
          message: '添加订单信息失败，请稍后再试！',
        })
      }
      // 添加成功
      res.send({ code: 200, message: '添加订单信息成功！' })
    })
  })
})

// 根据id删除订单信息
router.delete('/logisticsinfo/:id', (req, res) => {
  // 定义根据 id 删除用户数据的 SQL 语句
  const sql = `delete from logistics where logistics_id=?`
  db.query(sql, req.params.id, (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err.message)
    // SQL 语句执行成功，但影响行数不为 1
    if (results.affectedRows !== 1) {
      // return res.send({ code: 400, message: '添加用户失败，请稍后再试！' })
      return res.cc('删除订单信息失败，请稍后再试！')
    }

    // 删除成功
    res.send({
      code: 200,
      message: '删除订单信息成功！',
    })
  })
})

// 向外共享路由对象
module.exports = router
